import { login } from '@/api/user'
import { userProfile } from '@/api/user'
import { userInfo } from '@/api/user'
import { resetRouter } from '@/router'
import { getToken, setToken } from '@/utils/auth'

export default {
  namespaced: true,
  state: () => {
    return {
      // 初始值: 如果本地有就使用，没有就是''
      token: getToken() || '',
      userInfo: {}
    }
  },
  mutations: {
    // 存token函数
    setToken(state, nweToken) {
      state.token = nweToken
      // 调用utils/anth.js的函数给token做数据持久化
      setToken(nweToken)
    },
    // 存用户基本信息
    setUserInfo(start, newUserInfo) {
      start.userInfo = newUserInfo
    }
  },
  actions: {
    // 登录
    async userLogin(context, data) {
      // 调用发送登录请求的函数
      const res = await login(data)
      // 存入state中
      context.commit('setToken', res.data)
    },
    // 获取用户基本信息
    async getUserProfile(context) {
      // 1．获取用户的档案（没有头像，有id）
      const res = await userProfile()
      // 2. 获取用户头像
      const resImg = await userInfo(res.data.userId)
      // 3. 两个结果合并到一个对象
      const obj = { ...res.data, ...resImg.data }
      // 掉用setUserInfo函数存用户基本信息,存入返回结果
      context.commit('setUserInfo', obj)
      return res
    },
    // 滞空用户信息和token
    logout(context) {
      // 用户退出登录清空 token 和 userInfo
      context.commit('setToken', '')
      context.commit('setUserInfo', {})

      // 重置路由
      resetRouter()
    }
  }
}
